package org.lestr.secuel.m3ds.objets3D;

import java.util.Collection;

import org.lestr.secuel.m3ds.maths.IPoint3d;
import org.lestr.secuel.m3ds.maths.IPoint2d;

public interface IApparence {


    /** Ajoute un écouteur */
    public void ajoutEcouteur(EcouteurTexture écouteur);


    /** Retire un écouteur */
    public void retraitEcouteur(EcouteurTexture écouteur);


    /** Retourne l'objet 3D associé à la texture */
    public IObjet3d obtenirObjet3d();


    /** Retourne le matériau par défaut de la texture */
    public Materiau obtenirMatériauStandard();


    /** Défini le matériau d'un triangle. Null pour utiliser le matériau par défaut */
    public void définirMatériau(Materiau matériau,
                                ITriangle triangle);


    /** Retourne le matériau d'un triangle. Null pour utiliser le matériau par défaut */
    public Materiau obtenirMatériau(ITriangle triangle);


    /** Défini si les coordonnées de texture doivent être automatiquement calculées ou non */
    public void définirTexturageAutomatique(boolean auto);


    /** Retourne vrai si les coordonnées de texture sont automatiquement caculée */
    public boolean estTexturageAutomatique();


    /** Défini les coordonnées de texture. Il doit y avoir autant de points que de sommets de triangles dans l'objet et conserver le même ordre */
    public void setCoordonnées(Collection<IPoint2d> coordonnées);


    /** Retourne les coordonnées de texture */
    public Collection<IPoint2d> obtenirCoordonnées();


    /** Défini si les normales des sommets des triangles sont auto-calculées */
    public void définirNormalesAutomatiques(boolean auto);


    /** Retourne vrai si les normales des sommets des triangles sont auto-calculées */
    public boolean sontNormalesAutomatiques();


    /** Défini les normales. Il doit y avoir autant de points que de sommets de triangles dans l'objet et conserver le même ordre */
    public void définirNormales(Collection<IPoint3d> normales);


    /** Retourne les normales. Il doit y avoir autant de points que de sommets de triangles dans l'objet et conserver le même ordre */
    public Collection<IPoint3d> obtenirNormales();


    /** Retourne la position X de la texture */
    public IPositionTexture getPosition();


    /** Retourne la dimension X de la texture */
    public IDimensionTexture getDimension();


}// FIN Interface
